The present invention relates to a standalone software performance optimizer system for hybrid systems. Hybrid systems are a new and still evolving type of computer system. For the purpose of this invention, a hybrid system refers to a general purpose computer with the characteristic that it houses 2 or more types of Central Processing Unit (CPU), each with different performance characteristics. For example, a hybrid system may contain processors geared for encryption/decryption, processors designed for floating point performance, or multiple general purpose processors with different levels of performance. Further, it is possible that these different types of CPUs may all be usable by a single operating system image. The possibility that an operating system might have access to different types of CPUs optimized for different types of operations presents many challenges to the operating system, some of which are addressed by this invention.
In the case of a multithreaded application which consists of at least two, and likely many, software threads, it is the operating system's responsibility to dispatch the threads to CPUs in an optimal way. This is a challenge on a hybrid system because conventionally the operating system has no understanding of the individual characteristics of a software thread. Therefore, the operating system lacks the information it needs to know the best type of processor upon which each thread should be dispatched. This invention assists the operating system in classifying threads and making optimal dispatch decisions.
A known solution to classifying threads would be to employ established performance analysis techniques including static code analysis, runtime profile analysis, and timed statistics analysis. The drawback to these approaches is that these solutions require source code, performance analysis expertise, and time. To speed the adoption of new hybrid hardware configurations and save money, a new solution is needed.